package org.groupg.poi.word;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.*;

import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
 * 水印处理
 */

public class DocWaterMarker {

    public static void addWatermark(String inputFile, String outputFile, String watermarkText) throws Exception {
        // 1. 加载.doc文件
        HWPFDocument doc = new HWPFDocument(new FileInputStream(inputFile));

        // 2. 获取文档的页眉范围
        Range headerRange = doc.getHeaderStoryRange();

        // 3. 在页眉范围中插入水印文本
        // 创建新的段落
        headerRange.insertAfter("\r"); // 先换行
        int paraStart = headerRange.getEndOffset();
        headerRange.insertAfter(watermarkText);
        int paraEnd = headerRange.getEndOffset();

        // 4. 获取刚插入文本的CharacterRun以设置样式
        CharacterRun watermarkRun = headerRange.getCharacterRun(paraStart);
        // 设置水印样式：颜色、字体、大小
        watermarkRun.setColor(0xCCCCCC); // 浅灰色
        watermarkRun.setFontSize(60);
        watermarkRun.setBold(true);
        // 关键：设置文字为水印
        // 注意：HWPF可能没有直接的.setWatermark()方法，需要通过其他属性模拟
        // 例如，使用.setObjType()或设置特定标志位，具体需查阅HWPF API或源码

        // 5. 尝试通过对象类型等属性标记为水印 (具体属性值需试验或查阅资料)
//         watermarkRun.getParagraph(paraEnd);

        // 6. 保存文档
        FileOutputStream out = new FileOutputStream(outputFile);
        doc.write(out);
        out.close();
        doc.close();
    }
}